<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 2.0.23">
<meta name="description" content="This chapter contains a description of various issues related to installation, setup, and use of the high- performance network stack NetX Duo.">
<title>Chapter 2 - Installation and Use of NetX Duo</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
<style>
/*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
/* Uncomment the following line when using as a custom stylesheet */
/* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
html{font-family:sans-serif;-webkit-text-size-adjust:100%}
a{background:none}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
b,strong{font-weight:bold}
abbr{font-size:.9em}
abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
dfn{font-style:italic}
hr{height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
audio,video{display:inline-block}
audio:not([controls]){display:none;height:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type=checkbox],input[type=radio]{padding:0}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,::before,::after{box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:0}
p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ul.square{list-style-type:square}
ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}
table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
table thead,table tfoot{background:#f7f8f7}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt{background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.center{margin-left:auto;margin-right:auto}
.stretch{width:100%}
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
.clearfix::after,.float-group::after{clear:both}
:not(pre).nobreak{word-wrap:normal}
:not(pre).nowrap{white-space:nowrap}
:not(pre).pre-wrap{white-space:pre-wrap}
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
pre>code{display:block}
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menuref{color:#000}
.menuseq b:not(.caret),.menuref{font-weight:inherit}
.menuseq{word-spacing:-.02em}
.menuseq b.caret{font-size:1.25em;line-height:.8}
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
b.button::before{content:"[";padding:0 3px 0 2px}
b.button::after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
#content{margin-top:1.25em}
#content::before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
#header>h1:only-child{border-bottom:1px solid #dddddf;padding-bottom:8px}
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span::before{content:"\00a0\2013\00a0"}
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber::after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc li{line-height:1.3334;margin-top:.3334em}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#7a2518;font-size:1.2em}
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}
#content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
#content{margin-bottom:.625em}
.sect1{padding-bottom:.625em}
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
.sect1{padding-bottom:1.25em}}
.sect1:last-child{padding-bottom:0}
.sect1+.sect1{border-top:1px solid #e7e7e9}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
details{margin-left:1.25rem}
details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
details>summary::-webkit-details-marker{display:none}
details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
.paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:none}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
.sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:first-child,.sidebarblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child,.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
.listingblock>.content{position:relative}
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
.listingblock:hover code[data-lang]::before{display:block}
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.prettyprint{background:#f7f7f8}
pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
pre.prettyprint li code[data-lang]::before{opacity:1}
pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
table.linenotable td.code{padding-left:.75em}
table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
pre.pygments span.linenos{display:inline-block;margin-right:.75em}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
.verseblock{margin:0 1em 1.25em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
p.tableblock:last-child{margin-bottom:0}
td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
td.tableblock>.content>:last-child{margin-bottom:-1.25em}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>*>tr>*{border-width:1px}
table.grid-cols>*>tr>*{border-width:0 1px}
table.grid-rows>*>tr>*{border-width:1px 0}
table.frame-all{border-width:1px}
table.frame-ends{border-width:1px 0}
table.frame-sides{border-width:0 1px}
table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
ul.unstyled,ol.unstyled{margin-left:0}
li>p:empty:only-child::before{content:"";display:inline-block}
ul.checklist>li>p:first-child{margin-left:-1em}
ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
ul.inline>li{margin-left:1.25em}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
td.hdlist2{word-wrap:anywhere}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
.colist td:not([class]):first-child img{max-width:none}
.colist td:not([class]):last-child{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
.imageblock.left{margin:.25em .625em 1.25em 0}
.imageblock.right{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none;display:inline-block}
a.image object{pointer-events:none}
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
sup.footnote a,sup.footnoteref a{text-decoration:none}
sup.footnote a:active,sup.footnoteref a:active,#footnotes .footnote a:first-of-type:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background:#00fafa}
.black{color:#000}
.black-background{background:#000}
.blue{color:#0000bf}
.blue-background{background:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background:#fa00fa}
.gray{color:#606060}
.gray-background{background:#7d7d7d}
.green{color:#006000}
.green-background{background:#007d00}
.lime{color:#00bf00}
.lime-background{background:#00fa00}
.maroon{color:#600000}
.maroon-background{background:#7d0000}
.navy{color:#000060}
.navy-background{background:#00007d}
.olive{color:#606000}
.olive-background{background:#7d7d00}
.purple{color:#600060}
.purple-background{background:#7d007d}
.red{color:#bf0000}
.red-background{background:#fa0000}
.silver{color:#909090}
.silver-background{background:#bcbcbc}
.teal{color:#006060}
.teal-background{background:#007d7d}
.white{color:#bfbfbf}
.white-background{background:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background:#fafa00}
span.icon>.fa{cursor:default}
a span.icon>.fa{cursor:inherit}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]::after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@page{margin:1.25cm .75cm}
@media print{*{box-shadow:none!important;text-shadow:none!important}
html{font-size:80%}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]{border-bottom:1px dotted}
abbr[title]::after{content:" (" attr(title) ")"}
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
thead{display:table-header-group}
svg{max-width:100%}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#header,#content,#footnotes,#footer{max-width:none}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span::before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]::before{display:block}
#footer{padding:0 .9375em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
@media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
.sect1{padding:0!important}
.sect1+.sect1{border:0}
#footer{background:none}
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
</style>
</head>
<body class="article">
<div id="header">
<h1>Chapter 2 - Installation and Use of NetX Duo</h1>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>This chapter contains a description of various issues related to installation, setup, and use of the high- performance network stack NetX Duo, including the following:</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_host_considerations">Host Considerations</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Embedded development is usually performed on Windows or Linux (Unix) host computers. After the application is compiled, linked, and the executable is generated on the host, it is downloaded to the target hardware for execution.</p>
</div>
<div class="paragraph">
<p>Usually the target download is done from within the development tool&#8217;s debugger. After download, the debugger is responsible for providing target execution control (go, halt, breakpoint, etc.) as well as access to memory and processor registers.</p>
</div>
<div class="paragraph">
<p>Most development tool debuggers communicate with the target hardware via on-chip debug (OCD) connections such as JTAG (IEEE 1149.1) and Background Debug Mode (BDM). Debuggers also communicate with target hardware through In-Circuit Emulation (ICE) connections. Both OCD and ICE connections provide robust solutions with minimal intrusion on the target resident software.</p>
</div>
<div class="paragraph">
<p>As for resources used on the host, the source code for NetX Duo is delivered in ASCII format and requires approximately 1 Mbytes of space on the host computer&#8217;s hard disk.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_target_considerations">Target Considerations</h2>
<div class="sectionbody">
<div class="paragraph">
<p>NetX Duo requires between 5 KBytes and 45 KBytes of Read-Only Memory (ROM) on the target. Another 1 to 5KBytes of the target&#8217;s Random Access Memory (RAM) are required for the NetX Duo thread stack and other global data structures.</p>
</div>
<div class="paragraph">
<p>In addition, NetX Duo requires the use of two ThreadX timer objects and one ThreadX mutex object. These facilities are used for periodic processing needs and thread protection inside the NetX Duo protocol stack.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_product_distribution">Product Distribution</h2>
<div class="sectionbody">
<div class="paragraph">
<p>NetX Duo can be obtained from our public source code repository at <a href="https://github.com/eclipse-threadx/netxduo/" class="bare">https://github.com/eclipse-threadx/netxduo/</a>.</p>
</div>
<div class="paragraph">
<p>The following is a list of several important files in the repository:</p>
</div>
<div class="paragraph">
<p><strong>nx_api.h</strong><br>
C header file containing all system equates, data structures, and service prototypes.</p>
</div>
<div class="paragraph">
<p><strong>nx_port.h</strong>
C header file containing all development-tool and targetspecific data definitions and structures.</p>
</div>
<div class="paragraph">
<p><strong>demo_netx.c</strong>
C file containing a small demo application.</p>
</div>
<div class="paragraph">
<p><strong>nx.a (or nx.lib)</strong><br>
Binary version of the NetX Duo C library that is distributed with the standard package.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_netx_duo_installation">NetX Duo Installation</h2>
<div class="sectionbody">
<div class="paragraph">
<p>NetX Duo is installed by cloning the GitHub repository to your local machine. The following is typical syntax for creating a clone of the NetX Duo repository on your PC:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">    git clone https://github.com/eclipse-threadx/netxduo</code></pre>
</div>
</div>
<div class="paragraph">
<p>Alternatively you can download a copy of the repository using the download button on the GitHub main page.</p>
</div>
<div class="paragraph">
<p>You will also find instructions for building the NetX Duo library on the front page of the online repository.</p>
</div>
<div class="admonitionblock important">
<table>
<tr>
<td class="icon">
<div class="title">Important</div>
</td>
<td class="content">
<em>Application software needs access to the NetX Duo library file (usually <strong>nx.a</strong> or <strong>nx.lib</strong>) and the C include files <strong>nx_api.h, and nx_port.h</strong>. This is accomplished either by setting the appropriate path for the development tools or by copying these files into the application development area.</em>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_using_netx_duo">Using NetX Duo</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Using NetX Duo is easy. Basically, the application code must include <strong><em>nx_api.h</em></strong> during compilation and link with the NetX Duo library <strong><em>nx.a</em></strong> (or <em>*nx.lib*)</em>.</p>
</div>
<div class="paragraph">
<p>The following are the four easy steps required to build a NetX Duo application:</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Step</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Step&nbsp;1:</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Include the <strong><em>nx_api.h</em></strong> file in all application files that use NetX Duo services or data structures.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Step&nbsp;2:</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Initialize the NetX Duo system by calling <strong><em>nx_system_initialize</em></strong> from the <strong><em>tx_application_define</em></strong> function or an application thread.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Step&nbsp;3:</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Create an IP instance, enable the Address Resolution Protocol (ARP), if necessary, and any sockets after <strong><em>nx_system_initialize</em></strong> is called.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Step&nbsp;4:</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Compile application source and link with the NetX Duo runtime library <strong><em>nx.a</em></strong> (or <strong><em>nx.lib</em></strong>). The resulting image can be downloaded to the target and executed!</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="_troubleshooting">Troubleshooting</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Each NetX Duo port is delivered with one or more demonstrations that execute on an actual network or via a simulated network driver. It is always a good idea to get the demonstration system running first.</p>
</div>
<div class="paragraph">
<p>If the demonstration system does not run properly, perform the following operations to narrow the problem:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Determine how much of the demonstration is running.</p>
</li>
<li>
<p>Increase stack sizes in any new application threads.</p>
</li>
<li>
<p>Recompile the NetX Duo library with the appropriate debug options listed in the configuration option section.</p>
</li>
<li>
<p>Examine the NX_IP structure to see if packets are being sent or received.</p>
</li>
<li>
<p>Examine the default packet pool to see if there are available packets.</p>
</li>
<li>
<p>Ensure the network driver is supplying ARP and IP packets with its headers on 4-byte boundaries for applications requiring IPv4 or IPv6 connectivity.</p>
</li>
<li>
<p>Temporarily bypass any recent changes to see if the problem disappears or changes.</p>
</li>
</ol>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_configuration_options">Configuration Options</h2>
<div class="sectionbody">
<div class="paragraph">
<p>There are several configuration options when building the NetX Duo library and the application using NetX Duo. The configuration options can be defined in the application source, on the command line, or within the <strong><em>nx_user.h</em></strong> include file, unless otherwise specified.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
<em>Options defined in <strong>nx_user.h</strong> are applied only if the application and NetX Duo library are built with</em> <strong>NX_INCLUDE_USER_DEFINE_FILE</strong> <em>defined.</em>
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>The following sections list the configuration options available in NetX Duo. General options applicable to both IPv4 and IPv6 are listed first, followed by IPv6-specific options.</p>
</div>
<div class="sect2">
<h3 id="_system_configuration_options">System Configuration Options</h3>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Option</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ASSERT_FAIL</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Symbol that defines the debug statement to use when an assertion fails.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DEBUG</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, enables the optional print debug information available from the RAM Ethernet network driver.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DEBUG_PACKET</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, enables the optional debug packet dumping available in the RAM Ethernet network driver.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ASSERT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables ASSERT checks in the source code. By default this option is not defined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ERROR_CHECKING</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, removes the basic NetX Duo error checking API and improves performance. API return codes not affected by disabling error checking are listed in bold typeface in the API definition. This define is typically used after the application is debugged sufficiently and its use improves performance and decreases code size.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DRIVER_DEFERRED_PROCESSING</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, enables deferred network driver packet handling. This allows the network driver to place a packet on the IP instance and have the real processing routine called from the NetX Duo internal IP helper thread.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DUAL_PACKET_POOL_ENABLE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to  <strong><em>NX_ENABLE_DUAL_PACKET_POOL</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_ENABLE_DUAL_PACKET_POOL</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_DUAL_PACKET_POOL</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, allows the stack to use two packet pools, one with large payload size and one with smaller payload size. By default this option is not enabled.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_EXTENDED_NOTIFY_SUPPORT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, enables more callback hooks in the stack. These callback functions are used by the BSD wrapper layer. By default this option is not defined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_INTERFACE_CAPABILITY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, allows the interface device driver to specify extra capability information, such as checksum off-loading. By default this option is not defined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_SOURCE_ADDRESS_CHECK</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, enables the source address of incoming packet to be checked. By default this option is disabled.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IPSEC_ENABLE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, enables the NetX Duo library to support IPsec operations. This feature requires the optional NetX Duo IPsec module. By default this feature is not enabled.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_LITTLE_ENDIAN</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, performs the necessary byte swapping on little endian environments to ensure the protocol headers are in proper big endian format. Note the default is typically setup in <strong><em>nx_port.h</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_MAX_PHYSICAL_INTERFACES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the total number of physical network interfaces on the device. The default value is 1 and is defined in <strong><em>nx_api.h</em></strong>; a device must have at least one physical interface. Note this does not include the loopback interface.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_NAT_ENABLE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, NetX Duo is built with NAT process. By default this option is not defined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_PHYSICAL_HEADER</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the size in bytes of the physical header of the frame. The default value is 16 (based on a typical 14-byte Ethernet frame aligned to 32-bit boundary) and is defined in <strong><em>nx_api.h</em></strong>. The application can override the default by defining the value before <strong><em>nx_api.h</em></strong> is included, such as in <em>*nx_user.h*.</em></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_PHYSICAL_TRAILER</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the size in bytes of the physical packet trailer and is typically used to reserve storage for things like Ethernet CRCs, etc. The default value is 4 and is defined in <strong><em>nx_api.h</em></strong>.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="_arp_configuration_options">ARP Configuration Options</h3>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Option</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ARP_DEFEND_BY_REPLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, allows NetX Duo to defend its IP address by sending an ARP response.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ARP_DEFEND_INTERVAL</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defines the interval, in seconds, the ARP module sends out the next defend packet in response to an incoming ARP message that indicates an address in conflict.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ARP_DISABLE_AUTO_ARP_ENTRY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_DISABLE_ARP_AUTO_ENTRY</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_DISABLE_ARP_AUTO_ENTRY</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ARP_EXPIRATION_RATE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the number of seconds ARP entries remain valid. The default value of zero disables expiration or aging of ARP entries and is defined in <strong><em>nx_api.h</em></strong>. The application can override the default by defining the value before <strong><em>nx_api.h</em></strong> is included.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ARP_MAC_CHANGE_NOTIFICATION_ENABLE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_ENABLE_ARP_MAC_CHANGE_NOTIFICATION</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_ENABLE_ARP_MAC_CHANGE_NOTIFICATION</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ARP_MAX_QUEUE_DEPTH</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the maximum number of packets that can be queued while waiting for an ARP response. The default value is 4 and is defined in <strong><em>nx_api.h</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ARP_MAXIMUM_RETRIES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the maximum number of ARP retries made without an ARP response. The default value is 18 and is defined in <strong><em>nx_api.h</em></strong>. The application can override the default by defining the value before <strong><em>nx_api.h</em></strong> is included.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ARP_UPDATE_RATE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the number of seconds between ARP retries. The default value is 10, which represents 10 seconds, and is defined in <strong><em>nx_api.h</em></strong>. The application can override the default by defining the value before <strong><em>nx_api.h</em></strong> is included.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ARP_AUTO_ENTRY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables entering ARP request information in the ARP cache.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ARP_INFO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables ARP information gathering.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_ARP_MAC_CHANGE_NOTIFICATION</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, allows ARP to invoke a callback notify function on detecting the MAC address is updated.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="_icmp_configuration_options">ICMP Configuration Options</h3>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Option</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMP_INFO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables ICMP information gathering.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMP_RX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables both ICMPv4 and ICMPv6 checksum computation on received ICMP packets. This option is useful when the network interface driver is able to verify the ICMPv4 and ICMPv6 checksum, and the application does not use the IP fragmentation feature or the IPsec feature. By default this option is not defined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMP_TX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables both ICMPv4 and ICMPv6 checksum computation on transmitted ICMP packets. This option is useful where the network interface driver is able to compute the ICMPv4 and ICMPv6 checksum, and the application does not use the IP fragmentation feature or IPsec feature. By default this option is not defined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMPV4_ERROR_MESSAGE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, NetX Duo does not send ICMPv4 Error Messages in response to error conditions such as improperly formatted IPv4 header. By default this option is not defined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMPV4_RX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables ICMPv4 checksum computation on received ICMP packets. This option is defined automatically if <strong><em>NX_DISABLE_ICMP_RX_CHECKSUM</em></strong> is defined. By default this option is not defined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMPv4_RX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_DISABLE_ICMPV4_RX_CHECKSUM</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_DISABLE_ICMPV4_RX_CHECKSUM</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMPV4_TX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables ICMPv4 checksum computation on transmitted ICMP packets. This option is defined automatically if <strong><em>NX_DISABLE_ICMP_TX_CHECKSUM</em></strong> is defined. By default this option is not defined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMPv4_TX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_DISABLE_ICMPV4_TX_CHECKSUM</em></strong>.&lt;/br&gt;Although it is still being supported, new designs are encouraged to use <strong><em>NX_DISABLE_ICMPV4_TX_CHECKSUM</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_ICMP_ADDRESS_CHECK</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, the destination address of ICMP packet is checked. The default is disabled. An ICMP Echo Request destined to an IP broadcast or IP multicast address will be silently discarded.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="_igmp_configuration_options">IGMP Configuration Options</h3>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Option</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_IGMP_INFO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables IGMP information gathering.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_IGMPV2</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables IGMPv2 support, and NetX Duo supports IGMPv1 only. By default this option is not set and is defined in <strong><em>nx_api.h</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_MAX_MULTICAST_GROUPS</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the maximum number of multicast groups that can be joined. The default value is 7 and is defined in <strong><em>nx_api.h</em></strong>. The application can override the default by defining the value before <strong><em>nx_api.h</em></strong> is included.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="_ip_configuration_options">IP Configuration Options</h3>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Option</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_FRAGMENTATION</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables both IPv4 and IPv6 fragmentation and reassembly logic.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_IPV4</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables IPv4 functionality. This option can be used to build NetX Duo to support IPv6 only. By default this option is not defined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_IP_INFO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables IP information gathering.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_IP_RX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables checksum logic on received IPv4 packets. This is useful if the network device is able to verify the IPv4 checksum, and the application does not expect to use IP fragmentation or IPsec.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_IP_TX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables checksum logic on IPv4 packets sent. This is useful in situations in which the underlying network device is capable of generating the IPv4 header checksum, and the application does not expect to use IP fragmentation or IPsec.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_LOOPBACK_INTERFACE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables NetX Duo support for the loopback interface.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_RX_SIZE_CHECKING</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables the size checking on received packets.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_IP_RAW_PACKET_FILTER</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, enables the IP raw packet receive filter functionality. Applications requiring more control over the type of raw IP packets to be received can use this feature. The IP raw packet filter feature also supports the raw socket operation in the BSD compatibility layer. By default this option is not defined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_IP_STATIC_ROUTING</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, enables IPv4 static routing in which a destination address can be assigned a specific next hop address. By default IPv4 static routing is disabled.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_FRAGMENT_IMMEDIATE_ASSEMBLY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, allows IPv4 and IPv6 reassembly logic to execute right away after receiving an IP fragment. By default this option is not defined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IP_MAX_REASSEMBLY_TIME</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Symbol that controls maximum time allowed to reassemble IPv4 fragment and IPv6 fragment. Note the value defined here overwrites both <strong><em>NX_IPV4_MAX_REASSEMBLY_TIME</em></strong> and <strong><em>NX_IPV6_MAX_REASSEMBLY_TIME</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IP_PERIODIC_RATE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, specifies the number of ThreadX timer ticks in one second. The default value is derived from the ThreadX symbol <strong><em>TX_TIMER_TICKS_PER_SECOND,</em></strong> which by default is set to 100 (10ms timer). Applications shall exercise caution when modifying this value, as the rest of the NetX Duo modules derive timing information from <strong><em>NX_IP_PERIODIC_RATE</em>.</strong></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IP_RAW_MAX_QUEUE_DEPTH</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Symbol that controls the number of raw IP packets can be queued on the raw packet receive queue. By default value is set to 20.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IP_ROUTING_TABLE_SIZE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, sets the maximum number of entries in the IPv4 static routing table, which is a list of an outgoing interface and the next hop addresses for a given destination address. The default value is 8 and is defined in <strong><em>nx_api.h.</em></strong> This symbol is used only if <strong><em>NX_ENABLE_IP_STATIC_ROUTING</em></strong> is defined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IPV4_MAX_REASSEMBLY_TIME</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Symbol that controls maximum time allowed to reassemble IPv4 fragment. Note the value defined in NX_IP_MAX_REASSEMBLY_TIME overwrites this value.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_TCPIP_OFFLOAD</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Symbol that enables TCP/IP offload feature. Note NX_ENABLE_INTERFACE_CAPABILITY must be defined to enable this feature.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="_packet_configuration_options">Packet Configuration Options</h3>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Option</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_PACKET_CHAIN</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables the packet chain logic. By default this is not defined.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_PACKET_INFO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables packet pool information gathering.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_LOW_WATERMARK</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, enables NetX Duo packet pool low watermark feature. Application sets low watermark value. On receiving TCP packets, if the packet pool low watermark is reached, NetX Duo silently discards the packet by releasing it, preventing the packet pool from starvation. By default this feature is not enabled.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_PACKET_DEBUG_INFO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, logs packet debug information.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_PACKET_ALIGNMENT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, specifies the alignment requirement, in bytes, for starting address of the packet payload area. This option deprecates  <strong><em>NX_PACKET_HEADER_PAD</em></strong> and <strong><em>NX_PACKET_HEADER_PAD_SIZE</em></strong>. By default this option is defined to be 4, making the starting address of the payload area 4-byte aligned.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_PACKET_HEADER_PAD</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, enables padding towards the end of the NX_PACKET control block. The number of ULONG words to pad is defined by  <strong><em>NX_PACKET_HEADER_PAD_SIZE</em></strong>. Note this option is depreciated by <strong><em>NX_PACKET_ALIGNMENT</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_PACKET_HEADER_PAD_SIZE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sets the number of ULONG words to be padded to the NX_PACKET structure, allowing the packet payload area to start at the desired alignment. This feature is useful when receive buffer descriptors point directly into NX_PACKET payload area, and the network  interface receive logic or the cache operation logic expects the buffer starting address to meet certain alignment requirements. This value becomes valid only when <strong><em>NX_PACKET_HEADER_PAD</em></strong> is defined. Note this option is deprecated by <strong><em>NX_PACKET_ALIGNMENT</em></strong>.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="_rarp_configuration_options">RARP Configuration Options</h3>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Option</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_RARP_INFO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables RARP information gathering.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="_tcp_configuration_options">TCP Configuration Options</h3>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Option</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_RESET_DISCONNECT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables the reset processing during disconnect when the timeout value supplied is specified as <strong><em>NX_NO_WAIT</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_TCP_INFO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables TCP information gathering.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_TCP_RX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables checksum logic on received TCP packets. This is only useful in situations in which the link-layer has reliable checksum or  CRC processing, or the interface driver is able to verify the TCP checksum in hardware, and the application does not use IPsec.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_TCP_TX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables checksum logic for sending TCP packets. This is only useful in situations in which the receiving network node has received TCP checksum logic disabled or the underlying network driver is capable of generating the TCP checksum, and the application does not use IPsec.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_TCP_KEEPALIVE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, enables the optional TCP keepalive timer. The default settings is not enabled.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_TCP_MSS_CHECK</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, enables the verification of minimum peer MSS before accepting a TCP connection. To use this feature, the symbol <strong><em>NX_ENABLE_TCP_MSS_MINIMUM</em></strong> must be defined. By default, this option is not enabled.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_TCP_QUEUE_DEPTH_UPDATE_NOTIFY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, allows the application to install a callback function that is invoked when the TCP transmit queue depth is no longer at maximum value. This callback serves as an indication that the TCP socket is ready to transmit more data. By default this option is not enabled.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_TCP_WINDOW_SCALING</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Enables the window scaling option for TCP applications. If defined, window scaling option is negotiated during TCP connection phase, and the application is able to specify a window size larger than 64K. The default setting is not enabled (not defined).</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_MAX_LISTEN_REQUESTS</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the maximum number of server listen requests. The default value is 10 and is defined in <strong><em>nx_api.h</em></strong>. The application can override the default by defining the value before <strong><em>nx_api.h</em></strong> is included.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_ACK_EVERY_N_PACKETS</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the number of TCP packets to receive before sending an ACK. Note if <strong><em>NX_TCP_IMMEDIATE_ACK</em></strong> is enabled but <strong><em>NX_TCP_ACK_EVERY_N_PACKETS</em></strong> is not, this value is automatically set to 1 for backward compatibility.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_ACK_TIMER_RATE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies how the number of system ticks (NX_IP_PERIODIC_RATE) is divided to calculate the timer rate for the TCP delayed ACK processing. The default value is 5, which represents 200ms, and is defined in <strong><em>nx_tcp.h</em></strong>. The application can override the default by defining the value before <strong><em>nx_api.h</em></strong> is included.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_ENABLE_KEEPALIVE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_ENABLE_TCP_KEEPALIVE</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_ENABLE_TCP_KEEPALIVE</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_ENABLE_MSS_CHECK</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_ENABLE_TCP_MSS_CHECK</em></strong>.Although it is still being supported, new designs are encouraged to use <strong><em>NX_ENABLE_TCP_MSS_CHECK.</em></strong></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_ENABLE_WINDOW_SCALING</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_ENABLE_TCP_WINDOW_SCALING</em></strong>.Although it is still being supported, new designs are encouraged to use <strong><em>NX_ENABLE_TCP_WINDOW_SCALING</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_FAST_TIMER_RATE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies how the number of NetX Duo internal ticks (NX_IP_PERIODIC_RATE) is divided to calculate the fast TCP timer rate. The fast TCP timer is used to drive the various TCP timers, including the delayed ACK timer. The default value is 10, which represents 100ms assuming the ThreadX timer is running at 10ms. This value is defined in <strong><em>nx_tcp.h</em></strong>. The  application can override the default by defining the value before <strong><em>nx_api.h</em></strong> is included.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_IMMEDIATE_ACK</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, enables the optional TCP immediate ACK response processing. Defining this symbol is equivalent to defining  <strong><em>NX_TCP_ACK_EVERY_N_PACKETS</em></strong> to be 1.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_KEEPALIVE_INITIAL</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the number of seconds of inactivity before the keepalive timer activates. The default value is 7200, which represents 2 hours, and is defined in <strong><em>nx_tcp.h</em></strong>. The application can override the default by defining the value before <strong><em>nx_api.h</em></strong> is included.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_KEEPALIVE_RETRIES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies how many keepalive retries are allowed before the connection is deemed broken. The default value is 10, which represents 10 retries, and is defined in <strong><em>nx_tcp.h</em></strong>. The application can override the default by defining the value before <strong><em>nx_api.h</em></strong> is included.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_KEEPALIVE_RETRY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the number of seconds between retries of the keepalive timer assuming the other side of the connection is not responding. The default value is 75, which represents 75 seconds between retries, and is defined in <strong><em>nx_tcp.h</em></strong>. The application can override the default by defining the value before <strong><em>nx_api.h</em></strong> is included.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_MAX_OUT_OF_ORDER_PACKETS</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Symbol that defines the maximum number of out-of-order TCP packets can be kept in the TCP socket receive queue. This symbol can be used to limit the number of packets queued in the TCP receive socket, preventing the packet pool from being starved. By default this symbol is not defined, thus there is no limit on the number of out of order packets being queued in the TCP socket.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_MAXIMUM_RETRIES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies how many data transmit retries are allowed before the connection is deemed broken. The default value is 10, which represents 10 retries, and is defined in <strong><em>nx_tcp.h</em></strong>. The application can override the default by defining the value before <strong><em>nx_api.h</em></strong> is included.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_MAXIMUM_RX_QUEUE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Symbol that defines the maximum receive queue for TCP sockets. This feature is enabled by <strong><em>NX_ENABLE_LOW_WATERMARK</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_MAXIMUM_TX_QUEUE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the maximum depth of the TCP transmit queue before TCP send requests are suspended or rejected. The default value is 20, which means that a maximum of 20 packets can be in the transmit queue at any given time. Note packets stay in the transmit queue until an ACK that covers some or all of the packet data is received from the other side of the connection. This constant is defined in <strong><em>nx_tcp.h</em></strong>. The application can override the default by defining the value before <strong><em>nx_api.h</em></strong> is included.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_MSS_MINIMUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Symbol that defines the minimal MSS value NetX Duo TCP module accepts. This feature is enabled by <strong><em>NX_ENABLE_TCP_MSS_CHECK</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_QUEUE_DEPTH_UPDATE_NOTIFY_ENABLE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_ENABLE_TCP_QUEUE_DEPTH_UPDATE_NOTIFY</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_ENABLE_TCP_QUEUE_DEPTH_UPDATE_NOTIFY</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_RETRY_SHIFT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies how the retransmit timeout period changes between retries. If this value is 0, the initial retransmit timeout is the same as subsequent retransmit timeouts. If this value is 1, each successive retransmit is twice as long. If this value is 2, each subsequent retransmit timeout is four times as long. The default value is 0 and is defined in <strong><em>nx_tcp.h</em></strong>. The application can override the default by defining the value before <strong><em>nx_api.h</em></strong> is included.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_TCP_TRANSMIT_TIMER_RATE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies how the number of system ticks (<strong><em>NX_IP_PERIODIC_RATE</em></strong>) is divided to calculate the timer rate for the TCP transmit retry processing. The default value is 1, which represents 1 second, and is defined in <strong><em>nx_tcp.h</em></strong>. The application can override the default by defining the value before <strong><em>nx_api.h</em></strong> is included.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="_udp_configuration_options">UDP Configuration Options</h3>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Option</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_UDP_INFO</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables UDP information gathering.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_UDP_RX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables the UDP checksum computation on incoming UDP packets. This is useful if the network interface driver is able to verify UDP header checksum in hardware, and the application does not enable IPsec or IP fragmentation logic.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_UDP_TX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables the UDP checksum computation on outgoing UDP packets. This is useful if the network interface driver is able to compute UDP header checksum and insert the value in the IP head before transmitting the data, and the application does not enable IPsec or IP fragmentation logic.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="_ipv6_options">IPv6 Options</h3>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Option</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_IPV6</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Disables IPv6 functionality when the NetX Duo library is built. For applications that do not need IPv6, this avoids pulling in code and additional storage space needed to support IPv6.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_IPV6_PATH_MTU_DISCOVERY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables path MTU discovery, which is used to determine the maximum MTU in the path to a target in the NetX Duo host destination table. This enables the NetX Duo host to send the largest possible packet that will not require fragmentation. By default, this option is defined (path MTU is disabled).</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_IPV6_ADDRESS_CHANGE_NOTIFY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, allows a callback function to be invoked when the IPv6 address is changed. By default this option is not enabled.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_IPV6_MULTICAST</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, enables IPv6 multicast join/leave function. By default this option is not enabled.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ENABLE_IPV6_PATH_MTU_DISCOVERY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, enables the IPv6 path MTU discovery feature. By default this option is not enabled.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IPV6_ADDRESS_CHANGE_NOTIFY_ENABLE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_ENABLE_IPV6_ADDRESS_CHANGE_NOTIFY</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_ENABLE_IPV6_ADDRESS_CHANGE_NOTIFY</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IPV6_DEFAULT_ROUTER_TABLE_SIZE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the number of entries in the IPv6 routing table. At least onS entry is needed for the default router. Defined in <strong><em>nx_api.h</em></strong>, the default value is 8.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IPV6_DESTINATION_TABLE_SIZE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the number of entries in the IPv6 destination table. This stores information about next hop addresses for IPv6 addresses. Defined in <strong><em>nx_api.h</em></strong>, the default value is 8.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IPV6_MAX_REASSEMBLY_TIME</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Symbol that controls the maximum time allowed to reassemble IPv6 fragment.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IPV6_MULTICAST_ENABLE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_ENABLE_IPV6_MULTICAST</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_ENABLE_IPV6_MULTICAST</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IPV6_PREFIX_LIST_TABLE_SIZE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the size of the prefix table. Prefix information is obtained from router advertisements and is part of the IPv6 address configuration. Defined in <strong><em>nx_api.h</em></strong>, the default value is 8.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IPV6_STATELESS_AUTOCONFIG_CONTROL</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, allows NetX Duo to disable stateless address autoconfiguration feature. By default this option is not enabled.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_MAX_IPV6_ADDRESSES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the number of entries in the IPv6 address pool. During interface configuration, NetX Duo uses IPv6 entries from the pool. It is defaulted to (NX_MAX_PHYSICAL_INTERFACES * 3) to allow each interface to have at least one link local address and two global addresses. Note that all interfaces share the IPv6 address pool.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_PATH_MTU_INCREASE_WAIT_INTERVAL</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the wait interval in timer ticks to reset the path MTU for a specific target in the destination table. If <strong><em>NX_DISABLE_IPV6_PATH_MTU_DISCOVERY</em></strong> is defined, defining this symbol has no effect.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_PATH_MTU_INCREASE_WAIT_INTERVAL</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Symbol that specifies the wait interval (in seconds) to reset the path MTU value for a destination table entry. It is valid only if <strong><em>NX_ENABLE_IPV6_PATH_MTU_DISCOVERY</em></strong> is defined. By default this value is set to 600 (seconds).</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="_neighbor_cache_configuration_options">Neighbor Cache Configuration Options</h3>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Option</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DELAY_FIRST_PROBE_TIME</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the delay in seconds before the first solicitation is sent out for a cache entry in the STALE state. Defined in <strong><em>nx_nd_cache.h</em></strong>, the default value is 5.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_IPV6_DAD</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, this option disables Duplicate Address Detection (DAD) during IPv6 address assignment. Addresses are set either by manual configuration or through Stateless Address Auto Configuration.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_IPV6_PURGE_UNUSED_CACHE_ENTRIES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, this option prevents NetX Duo from removing older cache table entries before their timeout expires to make room for new entries when the table is full. Static and router entries are never purged.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IPV6_DAD_TRANSMITS</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the number of Neighbor Solicitation messages to be sent before NetX Duo marks an interface address as valid. If <strong><em>NX_DISABLE_IPV6_DAD</em></strong> is defined (DAD disabled), setting this option has no effect. Alternatively, a value of zero (0) turns off DAD but leaves the DAD functionality in NetX Duo. Defined in <strong><em>nx_api.h</em></strong>, the default value is 3.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IPV6_DISABLE_PURGE_UNUSED_CACHE_ENTRIES</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_DISABLE_IPV6_PURGE_UNUSED_CACHE_ENTRIES</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_DISABLE_IPV6_PURGE_UNUSED_CACHE_ENTRIES</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_IPV6_NEIGHBOR_CACHE_SIZE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the number of entries in the IPv6 Neighbor Cache table. Defined in <strong><em>nx_nd_cache.h</em></strong>, the default value is 16.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_MAX_MULTICAST_SOLICIT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the number of Neighbor Solicitation messages NetX Duo transmits as part of the IPv6 Neighbor Discovery protocol when mapping between IPv6 address and MAC address is required. Defined in <strong><em>nx_nd_cache.h</em></strong>, the default value is 3.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_MAX_UNICAST_SOLICIT</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the number of Neighbor Solicitation messages NetX Duo transmits to determine a specific neighbor&#8217;s reachability. Defined in <strong><em>nx_nd_cache.h</em></strong>, the default value is 3.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ND_MAX_QUEUE_DEPTH</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Symbol that defines the maximum number of packets queued up for ND cache to be resolved. By default this symbol is set to 4.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_REACHABLE_TIME</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the time out in seconds for a cache entry to exist in the REACHABLE state with no packets received from the cache destination IPv6 address. Defined in <strong><em>nx_nd_cache.h</em></strong>, the default value is 30.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_RETRANS_TIMER</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies in milliseconds the length of delay between solicitation packets sent by NetX Duo. Defined in <strong><em>nx_nd_cache.h</em></strong>, the default value is 1000.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NXDUO_DISABLE_DAD</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_DISABLE_IPV6_DAD</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_DISABLE_IPV6_DAD</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NXDUO_DUP_ADDR_DETECT_TRANSMITS</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_IPV6_DAD_TRANSMITS</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_IPV6_DAD_TRANSMITS</em></strong>.</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="_miscellaneous_icmpv6_configuration_options">Miscellaneous ICMPv6 Configuration Options</h3>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Option</th>
<th class="tableblock halign-left valign-top">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMPV6_ERROR_MESSAGE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables NetX Duo from sending an ICMPv6 error message in response to a problem packet (e.g., improperly formatted header or packet header type is deprecated) received from another host.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMPV6_REDIRECT_PROCESS</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables ICMPv6 redirect packet processing. NetX Duo by default processes redirect messages and updates the destination table with next hop IP address information.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMPV6_ROUTER_ADVERTISEMENT_PROCESS</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables NetX Duo from processing information received in IPv6 router advertisement packets.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMPV6_ROUTER_SOLICITATION</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables NetX Duo from sending IPv6 router solicitation messages at regular intervals to the router.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMPV6_RX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables ICMPv6 checksum computation on received ICMP packets.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMPv6_RX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_DISABLE_ICMPV6_RX_CHECKSUM</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_DISABLE_CMPV6_RX_CHECKSUM</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMPV6_TX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Defined, disables and ICMPv6 checksum computation on transmitted ICMP packets.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_DISABLE_ICMPV6_TX_CHECKSUM</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_DISABLE_ICMPV6_TX_CHECKSUM</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_DISABLE_ICMPV6_TX_CHECKSUM</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ICMPV6_MAX_RTR_SOLICITATIONS</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Define the max number of router solicitations a host sends until a router response is received. If no response is received, the host concludes no router is present. The default value is 3.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ICMPV6_RTR_SOLICITATION_DELAY</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the maximum delay for the initial router solicitation in seconds.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NX_ICMPV6_RTR_SOLICITATION_INTERVAL</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Specifies the interval between two router solicitation messages. The default value is 4.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NXDUO_DESTINATION_TABLE_SIZE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_IPV6_DESTINATION_TABLE_SIZE</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_IPV6_DESTINATION_TABLE_SIZE</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NXDUO_DISABLE_ICMPV6_ERROR_MESSAGE</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_DISABLE_ICMPV6_ERROR_MESSAGE</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_DISABLE_ICMPV6_ERROR_MESSAGE</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NXDUO_DISABLE_ICMPV6_REDIRECT_PROCESS</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_DISABLE_ICMPV6_REDIRECT_PROCESS</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_DISABLE_ICMPV6_REDIRECT_PROCESS</em></strong></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NXDUO_DISABLE_ICMPV6_ROUTER_ADVERTISEMENT_PROCESS</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_DISABLE_ICMPV6_ROUTER_ADVERTISEMENT_PROCESS</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_DISABLE_ICMPV6_ROUTER_ADVERTISEMENT_PROCESS</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NXDUO_DISABLE_ICMPV6_ROUTER_SOLICITATION</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_DISABLE_ICMPV6_ROUTER_SOLICITATION</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_DISABLE_ICMPV6_ROUTER_SOLICITATION</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NXDUO_ICMPV6_MAX_RTR_SOLICITATIONS</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_ICMPV6_MAX_RTR_SOLICITATIONS</em></strong>. Although it is still being supported, new designs are encouraged to use <strong><em>NX_ICMPV6_MAX_RTR_SOLICITATIONS</em></strong>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">NXDUO_ICMPV6_RTR_SOLICITATION_INTERVAL</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Renamed to <strong><em>NX_ICMPV6_RTR_SOLICITATION_INTERVAL</em></strong>. This symbol is being depreciated. Although it is still being supported, new designs are encouraged to use <strong><em>NX_ICMPV6_RTR_SOLICITATION_INTERVAL</em></strong></p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_netx_duo_version_id">NetX Duo Version ID</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The current version of NetX Duo is available to both the user and the application software during runtime. You can obtain the NetX Duo version from examination of the <strong>nx_port.h</strong> file. In addition, this file also contains a version history of the corresponding port. Application software can obtain the NetX Duo version by examining the global string <em><strong>_nx_version_id</em></strong> in <strong><em>nx_port.h</em></strong>.</p>
</div>
<div class="paragraph">
<p>Application software can also obtain release information from the constants shown below defined in <strong><em>nx_api.h</em></strong>.</p>
</div>
<div class="paragraph">
<p>These constants identify the current product release by name and the product major and minor version.</p>
</div>
<div class="paragraph">
<p>#define EL_PRODUCT_NETXDUO<br>
#define NETXDUO_MAJOR_VERSION<br>
#define NETXDUO_MINOR_VERSION</p>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2025-02-07 08:25:21 UTC
</div>
</div>
</body>
</html>